Inside Macintosh: QuickTime Components

Previous | Chapter Top | Chapter Contents | Next

Creating Video Digitizer Components

Video digitizer components are the most convenient mechanism for presenting new sources of video data to QuickTime. For example, if you are developing special-purpose video hardware that digitizes video images from a previously unsupported source device, you should create a video digitizer component so that applications or sequence grabber components can obtain data from your device.

Refer to the chapter "Component Manager" in Inside Macintosh: More Macintosh Toolbox for a general discussion of how to create a component.

The remaining topics in this section discuss issues you should consider when creating a video digitizer component.

Apple has defined a functional interface for video digitizer components. For information about the functions your digitizer component must support, see "Video Digitizer Component Functions," .

You can use the following enumerators to refer to the request codes for each of the functions that your component must support.

enum {
    /* video digitizer interface */
    kSelectVDGetMaxSrcRect                          = 0x1,  /* VDGetMaxSrcRect (required) */
    kSelectVDGetActiveSrcRect                       = 0x2,  /* VDGetActiveSrcRect
                                                                (required) */
    kSelectVDSetDigitizerRect                       = 0x3,  /* VDSetDigitizerRect
                                                                (required) */
    kSelectVDGetDigitizerRect                       = 0x4,  /* VDGetDigitizerRect
                                                                (required) */
    kSelectVDGetVBlankRect                          = 0x5,  /* VDGetVBlankRect (required) */
    kSelectVDGetMaskPixMap                          = 0x6,  /* VDGetMaskPixMap */
    kSelectVDGetPlayThruDestination                 = 0x8,  /* VDGetPlayThruDestination
                                                                (required) */
    kSelectVDUseThisCLUT                            = 0x9,  /* VDUseThisCLUT */
    kSelectVDSetInputGammaValue                     = 0xA,  /* VDSetInputGammaValue */
    kSelectVDGetInputGammaValue                     = 0xB,  /* VDGetInputGammaValue */
    kSelectVDSetBrightness                          = 0xC,  /* VDSetBrightness */
    kSelectVDGetBrightness                          = 0xD,  /* VDGetBrightness */
    kSelectVDSetContrast                            = 0xE,  /* VDSetContrast */
    kSelectVDSetHue                                 = 0xF,  /* VDSetHue */
    kSelectVDSetSharpness                           = 0x10, /* VDSetSharpness */
    kSelectVDSetSaturation                          = 0x11, /* VDSetSaturation */
    kSelectVDGetContrast                            = 0x12, /* VDGetContrast */
    kSelectVDGetHue                                 = 0x13, /* VDGetHue */
    kSelectVDGetSharpness                           = 0x14,/* VDGetSharpness */
    kSelectVDGetSaturation                          = 0x15, /* VDGetSaturation */
    kSelectVDGrabOneFrame                           = 0x16, /* VDGrabOneFrame
                                                                (required) */
    kSelectVDGetMaxAuxBuffer                        = 0x17, /* VDGetMaxAuxBuffer */
    kSelectVDGetDigitizerInfo                       = 0x19, /* VDGetDigitizerInfo
                                                                (required) */
    kSelectVDGetCurrentFlags                        = 0x1A, /* VDGetCurrentFlags
                                                                (required) */
    kSelectVDSetKeyColor                            = 0x1B, /* VDSetKeyColor */
    kSelectVDGetKeyColor                            = 0x1C, /* VDGetKeyColor */
    kSelectVDAddKeyColor                            = 0x1D, /* VDAddKeyColor */
    kSelectVDGetNextKeyColor                        = 0x1E, /* VDGetNextKeyColor */
    kSelectVDSetKeyColorRange                       = 0x1F, /* VDSetKeyColorRange */
    kSelectVDGetKeyColorRange                       = 0x20, /* VDGetKeyColorRange */
    kSelectVDSetDigitizerUserInterrupt              = 0x21,
                                                        /* VDSetDigitizerUserInterrupt */
    kSelectVDSetInputColorSpaceMode                 = 0x22, /* VDSetInputColorSpaceMode */
    kSelectVDGetInputColorSpaceMode                 = 0x23, /* VDGetInputColorSpaceMode */
    kSelectVDSetClipState                           = 0x24, /* VDSetClipState */
    kSelectVDSetClipState                           = 0x25, /* VDGetClipState */
    kSelectVDSetClipRgn                             = 0x26, /* VDSetClipRgn */
    kSelectVDClearClipRgn                           = 0x27, /* VDClearClipRgn */
    kSelectVDGetCLUTInUse                           = 0x28, /* VDGetCLUTInUse */
    kSelectVDSetPLLFilterType                       = 0x29, /* VDSetPLLFilterType */
    kSelectVDGetPLLFilterType                       = 0x2A, /* VDGetPLLFilterType */
    kSelectVDGetMaskandValue                        = 0x2B, /* VDGetMaskandValue */
    kSelectVDSetMasterBlendLevel                    = 0x2C, /* VDSetMasterBlendLevel */
    kSelectVDSetPlayThruDestination                 = 0x2D, /* VDSetPlayThruDestination */
    kSelectVDSetPlayThruOnOff                       = 0x2E, /* VDSetPlayThruOnOff */
    kSelectVDSetFieldPreference                     = 0x2F, /* VDSetFieldPreference
                                                                (required) */
    kSelectVDGetFieldPreference                     = 0x30, /* VDGetFieldPreference
                                                                (required) */
    kSelectVDPreflightDestination                   = 0x32, /* VDPreflightDestination
                                                                (required) */
    kSelectVDPreflightGlobalRect                    = 0x33, /* VDPreflightGlobalRect */
    kSelectVDSetPlayThruGlobalRect                  = 0x34, /* VDSetPlayThruGlobalRect */
    kSelectVDSetInputGammaRecord                    = 0x35, /* VDSetInputGammaRecord */
    kSelectVDGetInputGammaRecord                    = 0x36, /* VDGetInputGammaRecord */
    kSelectVDSetBlackLevelValue                     = 0x37,/* VDSetBlackLevelValue */
    kSelectVDGetBlackLevelValue                     = 0x38, /* VDGetBlackLevelValue */
    kSelectVDSetWhiteLevelValue                     = 0x39, /* VDSetWhiteLevelValue */
    kSelectVDGetWhiteLevelValue                     = 0x3A, /* VDGetWhiteLevelValue */
    kSelectVDGetVideoDefaults                       = 0x3B, /* VDGetVideoDefaults */
    kSelectVDGetNumberOfInputs                      = 0x3C,/* VDGetNumberOfInputs */
    kSelectVDGetInputFormat                         = 0x3D, /* VDGetInputFormat */
    kSelectVDSetInput                               = 0x3E, /* VDSetInput */
    kSelectVDGetInput                               = 0x3F, /* VDGetInput */
    kSelectVDSetInputStandard                       = 0x40, /* VDSetInputStandard */
    kSelectVDSetupBuffers                           = 0x41, /* VDSetupBuffers */
    kSelectVDGrabOneFrameAsync                      = 0x42, /* VDGrabOneFrameAsync */
    kSelectVDDone                                   = 0x43, /* VDDone */
    kSelectVDSetCompression                         = 0x44, /* VDSetCompression */
    kSelectVDCompressOneFrameAsync                  = 0x45, /* VDCompressOneFrameAsync */
    kSelectVDCompressDone                           = 0x46, /* VDCompressDone */
    kSelectVDReleaseCompressBuffer                  = 0x47, /* VDReleaseCompressBuffer */
    kSelectVDGetImageDescription                    = 0x48, /* VDGetImageDescription */
    kSelectVDResetCompressSequence                  = 0x49, /* VDResetCompressSequence */
    kSelectVDSetCompressionOnOff                    = 0x4A, /* VDSetCompressionOnOff */
    kSelectVDGetCompressionTypes                    = 0x4B, /* VDGetCompressionTypes */
    kSelectVDSetTimeBase                            = 0x4C, /* VDSetTimeBase */
    kSelectVDSetFrameRate                           = 0x4D, /* VDSetFrameRate */
    kSelectVDGetDataRate                            = 0x4E, /* VDGetDataRate */
    kSelectVDGetSoundInputDriver                    = 0x4F, /* VDGetSoundInputDriver */
    kSelectVDGetDMADepths                           = 0x50, /* VDGetDMADepths */
    kSelectVDGetPreferredTimeScale                  = 0x51, /* VDGetPreferredTimeScale */
    kSelectVDReleaseAsyncBuffers                    = 0x52,/* VDReleaseAsyncBuffers */
};

Component Type and Subtype Values

Required Functions

Optional Functions


© 1997 Apple Computer, Inc.

Previous | Chapter Top | Chapter Contents | Next